import type { PageParam, PageResult } from '@vben/request';

import { requestClient } from '#/api/request';

export namespace PerEmployeeApi {
  /** 人员基本信息信息 */
  export interface Employee {
    id: number; // 人员ID
    fullName?: string; // 姓名
    cardType: string; // 证件类型
    idcard: string; // 身份证号
    formerName: string; // 曾用名
    sex: number; // 性别
    birthDate: string; // 出生年月
    ethnicity: string; // 民族
    nativePlace: string; // 籍贯
    birthPlace: string; // 出生地
    mobile: string; // 联系电话
    householdAddress: string; // 户籍地址
    currentAddress: string; // 常住地址
    homeAddress: string; // 家庭地址
    identityType: string; // 身份类别
    employmentDate: string; // 参加工作时间
    status: string; // 状态
    postId: string; // 岗位
    politicalStatus: string; // 政治面貌
    partyJoinDate: string; // 入党时间
    highestEducation: string; // 最高学历
    graduationSchool: string; // 毕业院校
    graduationDate: string; // 毕业时间
    major: string; // 专业
    fileNumber: string; // 档案号
    photoUrl: string; // 照片
    unitId: number; // 单位id
    deptId: number; // 部门ID
    areaCode: number; // 行政区划编码
    remarks: string; // 备注
    metadata: string; // 其他参数
    staffType: string; // 编制类型
    teachingSubject: string; // 任教学科
    teacherCertificate: string; // 教师资格证
    teachingStartDate: string; // 从教起始时间
  }
}

/** 查询人员基本信息分页 */
export function getEmployeePage(
  data: PageParam,
  desensitize: boolean,
  encrypt: boolean,
) {
  return requestClient.post<PageResult<PerEmployeeApi.Employee>>(
    '/per/employee/page',
    data,
    {
      desensitize,
      encrypt,
    },
  );
}

/** 查询人员基本信息详情 */
export function getEmployee(id: number, desensitize: boolean) {
  return requestClient.get<PerEmployeeApi.Employee>(`/per/employee/get`, {
    params: { id },
    desensitize,
  });
}
/**
 * 根据登录名查询人员基本信息
 * @param desensitize 是否脱敏
 * @returns 人员基本信息
 */
export function getEmployeeByLogin(desensitize: boolean) {
  return requestClient.get<PerEmployeeApi.Employee>(
    `/per/employee/get-by-login`,
    {
      desensitize,
    },
  );
}

/** 新增人员基本信息 */
export function createEmployee(data: PerEmployeeApi.Employee) {
  return requestClient.post('/per/employee/create', data);
}

/** 修改人员基本信息 */
export function updateEmployee(data: PerEmployeeApi.Employee) {
  return requestClient.put('/per/employee/update', data);
}

/** 删除人员基本信息 */
export function deleteEmployee(id: number) {
  return requestClient.delete(`/per/employee/delete?id=${id}`);
}

/** 批量删除人员基本信息 */
export function deleteEmployeeList(ids: number[]) {
  return requestClient.delete(`/per/employee/delete-list?ids=${ids.join(',')}`);
}

/** 导出人员基本信息 */
export function exportEmployee(params: any) {
  return requestClient.download('/per/employee/export-excel', { params });
}
